package nju.bishe.weibo;

import java.util.ArrayList;
import java.util.List;

import nju.bishe.weibo.data.Tweet;
import nju.bishe.weibo.data.db.StatusTable;
import nju.bishe.weibo.ui.base.TwitterCursorActivity;
import weibo4android.Paging;
import weibo4android.Status;
import weibo4android.WeiboException;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;

public class MentionActivity extends TwitterCursorActivity {
        private static final String TAG = "MentionActivity";

        private static final String LAUNCH_ACTION = "nju.bishe.weibo.REPLIES";

        static final int DIALOG_WRITE_ID = 0;
        private int mNextPage = 1;

        public static Intent createIntent(Context context) {
                Intent intent = new Intent(LAUNCH_ACTION);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                return intent;
        }

        public static Intent createNewTaskIntent(Context context) {
                Intent intent = createIntent(context);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                return intent;
        }

        @Override
        protected boolean _onCreate(Bundle savedInstanceState) {
                if (super._onCreate(savedInstanceState)) {
                        setHeaderTitle("@提到我的");
                        return true;
                } else {
                        return false;
                }
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                return super.onCreateOptionsMenu(menu);
        }

        @Override
        protected Cursor fetchMessages() {
                return getDb().fetchAllTweets(getUserId(), StatusTable.TYPE_MENTION);
        }

        @Override
        protected void markAllRead() {
                getDb().markAllTweetsRead(getUserId(), StatusTable.TYPE_MENTION);
        }

        @Override
        protected String getActivityTitle() {
                return getResources().getString(R.string.page_title_mentions);
        }

        // for Retrievable interface

        @Override
        public String fetchMaxId() {
                return getDb().fetchMaxTweetId(getUserId(), StatusTable.TYPE_MENTION);
        }

        @Override
        public List<Status> getMessageSinceId(String maxId) throws WeiboException {
                if (maxId != null) {
                        return getApi().getMentions(Long.parseLong(maxId));
                } else {
                        return getApi().getMentions();
                }
        }

        @Override
        public int addMessages(ArrayList<Tweet> tweets, boolean isUnread) {
                return getDb().putTweets(tweets, getUserId(), StatusTable.TYPE_MENTION,
                                isUnread);
        }

        @Override
        public String fetchMinId() {
                return getDb().fetchMinTweetId(getUserId(), StatusTable.TYPE_MENTION);
        }

        @Override
        public List<Status> getMoreMessageFromId(String minId)
                        throws WeiboException {
                mNextPage++;
                return getApi().getMentions(mNextPage);
        }

        @Override
        public int getDatabaseType() {
                return StatusTable.TYPE_MENTION;
        }

        @Override
        public String getUserId() {
                return TwitterApplication.getMyselfId();
        }

}
